/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pdfprinter;

import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import com.itextpdf.text.Image;

import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Element;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import control_ingresos_techpro.Servicio;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Chapas
 */
public class order_printer {

    private static Font fuenteNegra6 = FontFactory.getFont("arial", 6, Font.BOLD, BaseColor.BLACK);
    private static Font fuenteNegra8 = FontFactory.getFont("arial", 8, Font.BOLD, BaseColor.BLACK);
    private static Font fuenteNegra12 = FontFactory.getFont("arial", 12, Font.BOLD, BaseColor.BLACK);
    private static Font fuenteAzul10 = FontFactory.getFont("arial", 10, Font.BOLD, new BaseColor(0, 129, 204));
    
    public String nombre = "Orden00001A";
    public String fecha = "14/08/2013";
    public String total = "Q2790.00";
    public String recorrido = "";
    public String proxserv =  "";
    
    ArrayList<Servicio> Trabajos = new ArrayList<Servicio>();
    ArrayList<Servicio> TrabajosAdicionales = new ArrayList<Servicio>();
    ArrayList<Servicio> RepuestoAdicional = new ArrayList<Servicio>();
    PdfPTable Detalle = new PdfPTable(2);

    public order_printer() {
    }

    public void imprimir_orden(String fecha, String reco, String proxs,String Cliente, String Vehiculo, ArrayList<Servicio> trab, ArrayList<Servicio> trabadic, ArrayList<Servicio> repadis) throws FileNotFoundException, DocumentException {

        this.fecha = fecha;
        this.recorrido = reco;
        this.proxserv = proxs;

        this.Trabajos = trab;
        this.TrabajosAdicionales = trabadic;
        this.RepuestoAdicional = repadis;

        Document documento = new Document();

        FileOutputStream ficheroPDF = new FileOutputStream("Orden.pdf");

        try {
            PdfWriter.getInstance(documento, ficheroPDF).setInitialLeading(20);
        } catch (Exception e) {
            e.printStackTrace();
        }

        documento.open();


        //agregar imagen de tecpro

        try {
            Image foto = Image.getInstance("Grupo TecProTeam SMALL.png");
            foto.scaleToFit(150, 150);
            foto.setAlignment(Chunk.ALIGN_LEFT);
            documento.add(foto);
        } catch (Exception e) {
            e.printStackTrace();
        }

        //***********************
        //AGREGAR MEMBRETE
        //***********************

        Paragraph Membrete = new Paragraph();



        Membrete.add(new Paragraph(nombre,
                fuenteNegra8));

        this.addLineasEnBlanco(Membrete, 1);

        Membrete.add(new Paragraph("9a. Avenida 1-69 Z.3 Mixco Col. Alvarado"
                + "\nGuatemala, Ciudad " + fecha
                + "\nTel: 40582638",
                fuenteNegra8));
        Membrete.add(new Paragraph("_____________________________________________________________________________________________", fuenteAzul10));
        //this.addLineasEnBlanco(Membrete, 1);

        //***************************************
        //AGREGAR ENCABEZADO
        //***************************************
        String[] datosv = Vehiculo.split("/");

        PdfPTable Encabezado = new PdfPTable(2);
        Encabezado.setWidthPercentage(100);
        Encabezado.setHorizontalAlignment(Element.ALIGN_CENTER);


        PdfPCell cell1 = new PdfPCell(new Phrase("Nombre: " + Cliente, fuenteNegra8));
        cell1.setBorder(Rectangle.NO_BORDER);
        PdfPCell cell2 = new PdfPCell(new Phrase("Placa: " + datosv[0], fuenteNegra8));
        cell2.setBorder(Rectangle.NO_BORDER);

        PdfPCell cell3 = new PdfPCell(new Phrase(" "));
        cell3.setBorder(Rectangle.NO_BORDER);
        PdfPCell cell4 = new PdfPCell(new Phrase("Marca: " + datosv[1], fuenteNegra8));
        cell4.setBorder(Rectangle.NO_BORDER);

        PdfPCell cell5 = new PdfPCell(new Phrase(" "));
        cell5.setBorder(Rectangle.NO_BORDER);
        PdfPCell cell6 = new PdfPCell(new Phrase("Linea: " + datosv[2], fuenteNegra8));
        cell6.setBorder(Rectangle.NO_BORDER);

        PdfPCell cell7 = new PdfPCell(new Phrase(" "));
        cell7.setBorder(Rectangle.NO_BORDER);
        PdfPCell cell8 = new PdfPCell(new Phrase("Año:   " + datosv[3], fuenteNegra8));
        cell8.setBorder(Rectangle.NO_BORDER);

        PdfPCell cell9 = new PdfPCell(new Phrase(" "));
        cell9.setBorder(Rectangle.NO_BORDER);
        PdfPCell cell10 = new PdfPCell(new Phrase("Color: " + datosv[4], fuenteNegra8));
        cell10.setBorder(Rectangle.NO_BORDER);

        Encabezado.addCell(cell1);
        Encabezado.addCell(cell2);
        Encabezado.addCell(cell3);
        Encabezado.addCell(cell4);
        Encabezado.addCell(cell5);
        Encabezado.addCell(cell6);
        Encabezado.addCell(cell7);
        Encabezado.addCell(cell8);
        Encabezado.addCell(cell9);
        Encabezado.addCell(cell10);

        Encabezado.addCell(cell9);
        Encabezado.addCell(cell9);

        Paragraph Recorrido = new Paragraph();
        Chunk recorrido = new Chunk("          Recorrido          ", fuenteNegra8);
        recorrido.setBackground(new BaseColor(0, 129, 204));
        Recorrido.add(recorrido);

        Recorrido.add(new Paragraph(this.recorrido, fuenteNegra8));
        Recorrido.add(new Paragraph("Próximo servicio: " + this.proxserv, fuenteNegra8));

        Recorrido.add(new Paragraph("_____________________________________________________________________________________________", fuenteAzul10));


        //***************************************
        //AGREGAR DETALLE
        //***************************************

        Detalle.setWidthPercentage(80);
        Detalle.setHorizontalAlignment(Element.ALIGN_CENTER);
        llenarDetalle();

        //***************************************
        //AGREGAR DETALLE
        //***************************************
        Paragraph PieDePagina = new Paragraph();
        PieDePagina.add(new Paragraph("_____________________________________________________________________________________________", fuenteAzul10));
        PieDePagina.add(new Paragraph("Atte.: \n Marlon Méndez",
                fuenteNegra8));             // color

        //crear y cerrar doc
        documento.add(Membrete);
        documento.add(Encabezado);
        documento.add(Recorrido);
        documento.add(Detalle);
        documento.add(PieDePagina);

        documento.close();

    }

    private static void addLineasEnBlanco(Paragraph parrafo, int nLineas) {
        for (int i = 0; i < nLineas; i++) {
            parrafo.add(new Paragraph(" "));
        }
    }

    private void llenarDetalle() {


        for (Servicio aux : this.Trabajos) {

            PdfPCell cell1 = new PdfPCell(new Phrase(aux.getDescripcion(), fuenteNegra6));
            cell1.setBorder(Rectangle.NO_BORDER);
            PdfPCell cell2 = new PdfPCell(new Phrase("Q" + aux.getCosto(), fuenteNegra6));
            cell2.setBorder(Rectangle.NO_BORDER);

            Detalle.addCell(cell1);
            Detalle.addCell(cell2);
        }

        for (Servicio aux : this.TrabajosAdicionales) {

            PdfPCell cell1 = new PdfPCell(new Phrase(aux.getDescripcion(), fuenteNegra6));
            cell1.setBorder(Rectangle.NO_BORDER);
            PdfPCell cell2 = new PdfPCell(new Phrase("Q" + aux.getCosto(), fuenteNegra6));
            cell2.setBorder(Rectangle.NO_BORDER);

            Detalle.addCell(cell1);
            Detalle.addCell(cell2);
        }

        for (Servicio aux : this.RepuestoAdicional) {

            PdfPCell cell1 = new PdfPCell(new Phrase(aux.getDescripcion(), fuenteNegra6));
            cell1.setBorder(Rectangle.NO_BORDER);
            PdfPCell cell2 = new PdfPCell(new Phrase("Q" + aux.getCosto(), fuenteNegra6));
            cell2.setBorder(Rectangle.NO_BORDER);

            Detalle.addCell(cell1);
            Detalle.addCell(cell2);
        }

        
        PdfPCell cell1 = new PdfPCell(new Phrase(" ", fuenteNegra6));
        cell1.setBorder(Rectangle.NO_BORDER);
        PdfPCell cell2 = new PdfPCell(new Phrase("Total: " + total, fuenteNegra6));
        cell2.setBorder(Rectangle.NO_BORDER);
        Detalle.addCell(cell1);
        Detalle.addCell(cell2);

    }
}
